#
# CMAKE SETUP
#
CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
#
# PROJECT INFO
#
PROJECT(libk8055)
SET(VERSION_MAJOR "0")
SET(VERSION_MINOR "5")
SET(VERSION_PATCH "1")
SET(VERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}")
ADD_DEFINITIONS(-DVERSION="${VERSION}")
#
# CONFIG OPTIONS
#
OPTION(WANT_DEBUG       "build with debug information" OFF)
IF(WANT_DEBUG)
    SET(CMAKE_BUILD_TYPE Debug)
ELSE()
    SET(CMAKE_BUILD_TYPE Release)
ENDIF()
SET(CMAKE_C_FLAGS "-pedantic -std=gnu99")
SET(CMAKE_C_FLAGS_RELEASE "-O3 -DNDEBUG")
SET(CMAKE_C_FLAGS_DEBUG "-g -O2 -DDEBUG")
#
# COLOR MESSAGES
#
string( ASCII 27 _escape)
function(COLOR_MESSAGE TEXT)
    if(CMAKE_COLOR_MAKEFILE)
        MESSAGE(${TEXT})
    else()
        string(REGEX REPLACE "${_escape}.[0123456789;]*m" "" __TEXT ${TEXT})
        MESSAGE(${__TEXT})
    endif()
endfunction()
#
# HEADER LIBRARY FUNCTIONS
#
INCLUDE(CheckIncludeFiles)
INCLUDE(CheckLibraryExists)
if(NOT WIN32)
    FIND_PACKAGE(PkgConfig)
endif()
if(PKG_CONFIG_FOUND)
    pkg_check_modules(LIBUSB libusb-1.0)
else()
    MESSAGE(STATUS "Checking for module 'libusb'")
endif()
find_path(LIBUSB_INCLUDE_DIR
    NAMES libusb.h
    PATHS /usr/include/libusb-1.0 /usr/local/include/libusb-1.0
)
find_library(LIBUSB_LDFLAGS
    NAMES libusb
)
include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(LIBUSB DEFAULT_MSG LIBUSB_LIBRARIES LIBUSB_INCLUDE_DIR)
mark_as_advanced(LIBUSB_INCLUDE_DIR  LIBUSB_LIBRARIES)
CHECK_INCLUDE_FILES(string.h HAVE_STRING_H)
CHECK_INCLUDE_FILES(stdio.h HAVE_STDIO_H)
CHECK_INCLUDE_FILES(assert.h HAVE_ASSERT_H)
CHECK_INCLUDE_FILES(math.h HAVE_MATH_H)
IF (LIBUSB_FOUND)
    ADD_SUBDIRECTORY(libk8055)
ENDIF()
#
FIND_PACKAGE(wxWidgets COMPONENTS core base)
IF(wxWidgets_FOUND)
    ADD_SUBDIRECTORY(k8055gui)
ENDIF()
#
FIND_PACKAGE(SWIG)
FIND_PACKAGE(PythonLibs)
FIND_PACKAGE(PythonInterp)
IF(SWIG_FOUND AND PYTHONLIBS_FOUND AND PYTHONINTERP_FOUND)
    SET(BUILD_PYTHON TRUE)
    ADD_SUBDIRECTORY(pyk8055)
ENDIF()
#
# BUILD SUMMARY
#
COLOR_MESSAGE("\n${_escape}[1;36mBuild Summary${_escape}[0m\n--------------------")
COLOR_MESSAGE("* ${_escape}[1;35mInstall dir${_escape}[0m           :   ${_escape}[1;32m${CMAKE_INSTALL_PREFIX}${_escape}[0m")
IF (LIBUSB_FOUND)
    COLOR_MESSAGE("* ${_escape}[1;35mlibusb${_escape}[0m                :   ${_escape}[1;32mfound${_escape}[0m build libk8055")
ELSE()
    COLOR_MESSAGE("* ${_escape}[1;35mlibusb${_escape}[0m                :   ${_escape}[1;31mmissing${_escape}[0m unable to build libk8055")
    MESSAGE( FATAL_ERROR "Abort" )
ENDIF()
IF(wxWidgets_FOUND)
    COLOR_MESSAGE("* ${_escape}[1;35mwxwidget${_escape}[0m              :   ${_escape}[1;32mfound${_escape}[0m build k8055gui")
ELSE()
    COLOR_MESSAGE("* ${_escape}[1;35mwxwidget${_escape}[0m              :   ${_escape}[1;31mmissing${_escape}[0m unable to build k8055gui")
ENDIF()
IF(SWIG_FOUND)
    COLOR_MESSAGE("* ${_escape}[1;35mSWIG${_escape}[0m                  :   ${_escape}[1;32mfound${_escape}[0m")
ELSE()
    COLOR_MESSAGE("* ${_escape}[1;35mSWIG${_escape}[0m                  :   ${_escape}[1;31mmissing${_escape}[0m")
ENDIF()
IF(PYTHONLIBS_FOUND)
    COLOR_MESSAGE("* ${_escape}[1;35mpython libs${_escape}[0m           :   ${_escape}[1;32mfound${_escape}[0m")
ELSE()
    COLOR_MESSAGE("* ${_escape}[1;35mpython libs${_escape}[0m           :   ${_escape}[1;31mmissing${_escape}[0m")
ENDIF()
IF(PYTHONINTERP_FOUND)
    COLOR_MESSAGE("* ${_escape}[1;35mpython interpreter${_escape}[0m    :   ${_escape}[1;32mfound${_escape}[0m")
ELSE()
    COLOR_MESSAGE("* ${_escape}[1;35mpython interpreter${_escape}[0m    :   ${_escape}[1;31mmissing${_escape}[0m")
ENDIF()
IF(BUILD_PYTHON)
    COLOR_MESSAGE("*                                 build pyk8055")
ELSE()
    COLOR_MESSAGE("*                                 unable to build pyk8055")
ENDIF()
MESSAGE("")
